tg-me.com/Python_Community_ru/2576
Last Update:
🖥 Новая функция в Python 3.14: t-строки — типобезопасные f-строки
Python 3.14 вводит t"..." — новый синтаксис для строк, который ориентирован на безопасность типов и интеграцию с различными системами шаблонов, такими как SQL, HTML и другие.
🔹 Что такое t-строка?
t"..." — это как f"...", но:
- интерполяция ограничена и контролируется;
- поддерживается строгое соответствие шаблону;
- переменные можно передавать явно, что предотвращает SQL-инъекции и XSS.
🔸 Пример:
name = "Alice"
greeting = t"Hello, {name}!" # t-строка
Вместо немедленной подстановки, как в f"...", t"..." создает шаблон с выражениями в качестве параметров.
🔐 Зачем это нужно?
✅ Обеспечение безопасности при генерации SQL, HTML, JSON
✅ Улучшение инструментов и проверки типов (посредством статического анализа)
✅ Контроль над контекстом исполнения (нельзя просто вставить переменную как есть — её нужно передать явно)
📦 Использование:
t-строки — это первый шаг к "template string literals", как в TypeScript.
Можно использовать с функциями:
def html(template: T[str]) -> SafeHTML:
...
html(t"{user_input}")
💡 Почему это важно?
Старый код:
f"SELECT * FROM users WHERE name = '{user_name}'"
может привести к SQL-инъекциям и XSS. t-строки являются безопасной альтернативой с встроенной защитой.
🛡 Пример: безопасный HTML
template = t"{user_input}"
html_output = html(template)
# <script>alert('bad')</script>
Функция html() может вернуть не просто строку, а полноценный HTMLElement. Больше никакой "грязи" — всё чисто и типобезопасно.
🔍 Работа с шаблоном
t-строки позволяют получить доступ к содержимому:
template = t"Hello {name}!"
template.strings # ("Hello ", "!")
template.values # (name,)
template.interpolations[0].format_spec # ">8"
Можно также вручную собрать шаблон:
Template("Hello ", Interpolation(value="World", expression="name"), "!")
🚀 Вывод:
t"..." — шаг к безопасным шаблонам и типизации строк в Python. Готовься к будущему Python — безопасному по умолчанию.
📌 Подробнее здесь (https://davepeck.org/2025/04/11/pythons-new-t-strings/)
@Python_Community_ru
BY Python Community

Share with your friend now:
tg-me.com/Python_Community_ru/2576